update-h5p-map.ts
Overview
update-h5p-map.ts is a Node.js script that generates a mapping of H5P library machine names to their corresponding GitHub repositories for a given organization. The output is saved to a specified file, typically in YAML format. This mapping is useful for automating H5P library management and integration in schulcloud-server.
How It Works
- Argument Parsing:
- Uses the argpackage to parse command-line arguments for organization name and output file path.
 
- Uses the 
- GitHub Interaction:
- Instantiates H5PGitHubClientto interact with the GitHub API.
- Fetches all repositories for the specified organization.
- Builds a map of H5P library machine names to their repository paths by reading library.jsonfrom each repo.
 
- Instantiates 
- Output:
- Writes the resulting map to the target file using fileSystemHelper.writeLibraryRepoMap.
 
- Writes the resulting map to the target file using 
Usage via npm
To run the update-h5p-map.ts script using default options, you'll just have to call:
npm run h5p:update-h5p-map
This will compile the script from TypeScript to JavaScript and then execute the compiled JavaScript file.
Usage from Command Line
To use the update-h5p-map.ts script directly from the command line, follow these steps:
1. Compile the Script from TypeScript to JavaScript
First, compile the TypeScript script to JavaScript using the TypeScript compiler:
npx tsc scripts/h5p/update-h5p-map.ts --esModuleInterop
This will generate a JavaScript file at scripts/h5p/update-h5p-map.js.
2. Run the Compiled JavaScript Script
Next, run the compiled JavaScript file with Node.js:
node ./scripts/h5p/update-h5p-map.js [options]
Command-Line Options
- --helpor- -h: Show usage information.
- --organizationor- -o: GitHub organization name. Default:- h5p
- --targetor- -t: Path to the output file. Default:- config/h5p-library-repo-map.yaml
If no options are provided, defaults are used for input and map files.
Usage Example
npx tsc scripts/h5p/update-h5p-map.ts --esModuleInterop
source .env
node ./scripts/h5p/update-h5p-map.js
Prerequisites
- Node.js installed
- Environment variable GITHUB_PERSONAL_ACCESS_TOKENset with a valid GitHub token
- Required dependencies installed (run npm ciin the project root)
Required Environment Variable
To update the H5P library to GitHub repository map using update-h5p-map.ts, you only need the following environment variable:
- GITHUB_PERSONAL_ACCESS_TOKEN: Required if you need to access private repositories or increase GitHub API rate limits. Set this variable to a valid GitHub personal access token.
Set this variable in your environment before running the script to avoid authentication or permission errors.
Output
- The script writes a YAML file mapping H5P library machine names to their GitHub repositories.
- Example output entry:
H5P.InteractiveVideo: h5p/h5p-interactive-video
 H5P.QuestionSet: h5p/h5p-question-set
Troubleshooting
- Ensure your GitHub token has sufficient permissions to read repositories.
- If the output file is not created, check for errors in the console and verify the target path exists and is writable.
Related Files
- service/h5p-github.client.js: GitHub API client logic
- helper/file-system.helper.js: File writing utilities
For further details, see inline comments in the script source code.